<?php


namespace tmcore\traits;

use think\facade\Queue;

Trait JobTrait
{
    /**
     * 获取当前类名
     * @return string
     */
    public static function getCallClassName() {
        return __CLASS__;
    }

    /**
     * 添加队列
     * @param array|string $data 数据
     * @param string $queue_name 队列名称
     * @param string $class_name 执行类名
     * @return string 队列job_id
     */
    public static function pushJob($data, $queue_name = null, $class_name = '')
    {
        if(!$class_name)$class_name = self::getCallClassName();
        return Queue::push($class_name, $data, $queue_name);
    }

    /**
     * 添加定时队列
     * @param int $timeStamp 执行的时间戳
     * @param array|string $data 数据
     * @param string $queue_name 队列名称
     * @param string $class_name 执行类名
     * @return string 队列job_id
     */
    public static function pushTimeJob($timeStamp, $data, $queue_name = null, $class_name = '')
    {
        $time = time();
        if ($timeStamp < $time) return false;
        if(!$class_name)$class_name = self::getCallClassName();
        return Queue::later($timeStamp - $time, $class_name, $data, $queue_name);
    }

    /**
     * 添加延时队列
     * @param integer $delay 延时时间 秒
     * @param array|string $data 数据
     * @param string $queue_name 队列名称
     * @param string $class_name 执行类名
     * @return string 队列job_id
     */
    public static function pushDelayJob($delay, $data, $queue_name = null, $class_name = '')
    {
        if(!$class_name)$class_name = self::getCallClassName();
        return Queue::later($delay, $class_name, $data, $queue_name);
    }
}